#include <iostream>
#include <jsoncpp/json/json.h>
#include <memory>
#include <string>

// 序列化
void test01()
{
    Json::Value root;
    root["name"] = "John";
    root["age"] = 30;
    root["isMarried"] = true;

    Json::StreamWriterBuilder builder;                                     // 创建一个流写入器
    std::unique_ptr<Json::StreamWriter> writer(builder.newStreamWriter()); // 创建一个流写入器的实例

    std::stringstream ss; // 创建一个stringstream对象
    writer->write(root, &ss);
    std::cout << ss.str() << std::endl; // 输出Json字符串
}

// 反序列化
void test02()
{
    std::string jsonStr = "{\"name\":\"John\",\"age\":30,\"isMarried\":true}";

    Json::Value root;    // 创建一个Json值对象
    Json::Reader reader; // 创建一个Json读取器

    bool ret = reader.parse(jsonStr, root); // 解析Json字符串

    std::cout << "name: " << root["name"].asString() << std::endl;
    std::cout << "age: " << root["age"].asInt() << std::endl;
    std::cout << "isMarried: " << root["isMarried"].asBool() << std::endl;
}

int main()
{
    // test01();
    test02();

    return 0;
}
